package org.ccay.async.task.service.impl;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.ccay.async.task.ImportTaskVO;
import org.ccay.async.task.dao.IImportTaskDao;
import org.ccay.async.task.service.IImportTaskService;
import org.ccay.core.base.PageVO;
import org.ccay.core.base.PagedResult;
import org.ccay.core.exception.ApplicationException;
import org.ccay.core.util.DaoUtil;
import org.ccay.core.validator.Validate;

/**
 * Task导入任务
 * 
 * @author chaowangbang
 * @since 2011-10-24
 */
@Named
public class ImportTaskService implements IImportTaskService {
	@Inject
	private IImportTaskDao impDao;

	private static final String TASKIMPORT = "TaskImport";

	 /**
     * 导入监控操作
     */
    public static final String IMPORT_MONITOR="importMonitor";
     /**
     * 导入监控操作描述
     */
    public static final String IMPORT_MONITOR_DESC="Import Monitor";

    @Override
	public PagedResult<ImportTaskVO> findImportTaskList(ImportTaskVO importTaskVO, PageVO pageVO)
			throws ApplicationException {
		// 分页查询
		PagedResult<ImportTaskVO> pagedResult = impDao.findImportTaskList(importTaskVO, pageVO);
		return pagedResult;
	}
	
	@Override
	public PagedResult<ImportTaskVO> findImportTaskListFilter(ImportTaskVO importTaskVO, PageVO pageVO)
			throws ApplicationException {
		// 分页查询
		PagedResult<ImportTaskVO> pagedResult = impDao.findImportTaskListFilter(importTaskVO, pageVO);
		return pagedResult;
	}
	
	@Override
	public PagedResult<ImportTaskVO> findImportTaskListMonitor(ImportTaskVO importTaskVO, PageVO pageVO)
			throws ApplicationException {
		// 分页查询
		PagedResult<ImportTaskVO> pagedResult = impDao.findImportTaskListMonitor(importTaskVO, pageVO);
		return pagedResult;
	}
	
	@Override
	public ImportTaskVO findImportTaskById(int id) throws ApplicationException {
		// 查询单个任务
		ImportTaskVO importTaskVO = new ImportTaskVO();
		importTaskVO.setTaskId(id);
		return DaoUtil.assertExists(impDao.findImportTask(importTaskVO), TASKIMPORT);
	}
	
	@Override
	public void createImportTask(ImportTaskVO importTaskVO) throws ApplicationException {
		// 创建任务
		DaoUtil.assertEffected(impDao.createImportTask(importTaskVO), TASKIMPORT);
	}

	@Validate
	@Override
	public void updateImportTask(ImportTaskVO importTaskVO) throws ApplicationException {
		// 更新任务
		DaoUtil.assertEffected(impDao.updateImportTask(importTaskVO), TASKIMPORT);
	}
	@Override
	public void cancelImportTask(ImportTaskVO importTaskVO) throws ApplicationException {
		// 取消任务
		DaoUtil.assertEffected(impDao.cancelImportTask(importTaskVO), TASKIMPORT);
	}

	@Validate
	@Override
	public void deleteImportTaskList(List<ImportTaskVO> importTaskVOs) throws ApplicationException {
		// 删除多条任务
		impDao.deleteImportTaskList(importTaskVOs);
	}

	@Validate
	public void deleteImportTask(ImportTaskVO importTaskVO) throws ApplicationException {
		// 删除单条任务
		impDao.deleteImportTask(importTaskVO);
	}
	@Override
	public List<ImportTaskVO> findTypeIDDistinct() {

		ImportTaskVO taskVO = new ImportTaskVO();
		// 查找任务类型
		return impDao.findTypeIDDistinct(taskVO);
	}
	@Override
	public List<ImportTaskVO> findMonitorTypeIDDistinct() {

		ImportTaskVO taskVO = new ImportTaskVO();
		// 查找任务类型
		return impDao.findMonitorTypeIDDistinct(taskVO);
	}
	
	@Override
	public ImportTaskVO findImportTask(ImportTaskVO importTaskVO)
			throws ApplicationException {
		return impDao.findImportTask(importTaskVO);
	}
}
